/**
 * <br>项目名: ThreadTest
 * <br>文件名: SemaphoreTest.java
 * <br>Copyright 2018   国信嘉宁数据技术有限公司
 */
package src;

import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.concurrent.Semaphore;

/** 
 * <br>类 名: SemaphoreTest 
 * <br>描 述: 描述类完成的主要功能 
 * <br>作 者: zhaowei 
 * <br>创 建: 2018年6月5日 
 * <br>版 本: v1.0.0 
 * <br>
 * <br>历 史: (版本) 作者 时间 注释
 */
public class SemaphoreTest {

	/**
	 * <br>描 述:
	 * <br>作 者: zhaowei 
	 * <br>历 史: (版本) 作者 时间 注释
	 * @param args
	 */
	public static void main(String[] args) {

		ExecutorService service = Executors.newCachedThreadPool();
		final Semaphore semaphore = new Semaphore(2);
		final int count = 5;
		for (int i = 0; i < count; i++) {
			Runnable rab = new Runnable() {
				@Override
				public void run() {
					try {
						semaphore.acquire();
						System.out.println("线程:" + Thread.currentThread().getName() + "开始下载");
						Thread.sleep(5000);
					} catch (InterruptedException e) {
						e.printStackTrace();
					} finally {
						System.out.println("线程:" + Thread.currentThread().getName() + "下载完毕");
						semaphore.release();
					}
				}
			};

			service.execute(rab);// 放在线程池中去维护

		}
		service.shutdown();
	}

}
